package com.zpark.oop.day06;

/**
 * 课程回顾：
 *      1、访问控制权限修饰符：
 *          public：公开的，被public修饰的方法、属性、类，在任何地方都可以访问
 *          default：默认的，不写任何修饰的方法、属性、类，只能在同一个包中访问
 *          protected：受保护的，被protected修饰的方法、属性、类，只能在同一个包中、子类中访问
 *          private：私有的，被private修饰的方法、属性、类，只能在本类中访问
 *      2、封装：
 *          该藏的藏起来，该露的露出来
 *          属性私有化，提供getter和setter方法，行为（方法）公开化
 *          注意：不是所有的方法都是public，只服务当前类的方法通常为私有的
 *      3、继承：
 *          泛化的过程，将多个类共同的代码抽取出来作为一个公共的类（父类），其他类继承父类的过程
 *          父类：被继承的类，也叫超类（基类）
 *          子类：继承了父类的类，也叫派生类
 *          继承的语法：
 *              [修饰符] class 子类名 extends 父类名{ 类体 }
 *              子类是可以拥有自己的属性和方法，但是不可用访问不父类的private属性和方法
 *              Java当中的继承是单继承，不能多继承
 *              Object 是所有类的父类，Object当中的属性和方法都是公共的，可以直接使用
 *              向上造型：父类引用 = new 子类对象
 *              向下造型：子类引用 = (子类类型) 父类对象
 *                  注意：强转可能会失败，需要使用instanceof关键字判断
 *       4、super关键字：
 *          super：当前类的父类对象
 *          super的用法：
 *              1）访问父类的属性：super.属性名
 *              2）访问父类的方法：super.方法名()
 *              3）访问父类构造器：super([参数])
 *                  注意：子类构造器当中会默认调用父类的无参构造器super()，如果父类没有无参
 *                  构造器，则会提示语法错误，需要手动调用父类的有参构造器super(参数)，
 *                  在子类的构造器当中super([参数])必须位于第一行，并且不能与this()同时出现
 *        5、方法重写：
 *          1）方法重写发生在父子类当中，方法名和参数列表完全相同，方法体不同
 *          2）子类不可用重写父类的私有方法
 *          3）子类抛出的异常必须要小于等于父类的方法抛出异常
 *          4）子类方法的修饰符必须大于或者等于父类方法的修饰符权限
 *          5）子类方法的返回值类型：
 *              a、返回值类型为基本数据类型和void的时候必须相同
 *              b、返回值类型为引用数据类型，子类返回值类型必须小于或者等于父类方法的返回值类型
 *          6）方法重写调用的时候看对象，方法重写遵循运行期绑定
 *       6、多态：
 *          调用同一个方法，由于对象不同，最终方法执行的结果不同
 *          方法多态，没有属性多态，对象本身也是多态
 *          多态实现方式：
 *              方法重写、方法重载、向上造型、向下造型
 *       7、static和final关键字：
 *          static：静态的
 *              修饰的方法和属性属于类的数据结构，访问时通过类名访问，而不是对象名访问
 *          静态块：
 *              static{
 *                  静态块，在类加载的时候执行，只执行一次
 *              }
 *          final：最终的、最后的
 *              final修饰属性，则属性赋值之后不允许修改其值
 *              final修饰方法，则方法不允许被重写
 *              final修饰类，则该类不能被继承
 *              final修饰的属性称为常量，常量名一般全部大写，使用下划线分割单词
 *              static final修饰的变量称为静态常量
 */
public class Demo01 {
    public static void main(String[] args) {
        Demo01 d1 = new Demo01();
        System.out.println(d1 instanceof Demo01);
    }
}
